<?php

Yii::import('ext.helpers.EDownloadHelper');

class PruebaController extends Controller {

    public function actionPrueba() {
        $model = new Prueba;

        $this->render('prueba', array('model' => $model));
    }

    public function actionDownload($nombreArchivo) {

        $path = file_exists(Yii::getPathOfAlias("webroot.uploads.xml") . DIRECTORY_SEPARATOR . $nombreArchivo) ? Yii::getPathOfAlias("webroot.uploads.xml") . DIRECTORY_SEPARATOR . $nombreArchivo : Yii::getPathOfAlias("webroot.uploads.xml") . DIRECTORY_SEPARATOR . $nombreArchivo;
        if ($path) {
            echo EDownloadHelper::download($path);
        }
    }

    public function actionIndexPrueba() {
        $this->render('anexoTransaccional', array('model' => $model));
    }

    public function ajaxmostrarCambiar() {
        $model = new AnexoTransaccional;
        $result = array();
        $result['tipo'] = 1;
        $result['success'] = false;
        $result['errors'] = $model->getErrors();
    }

    public function actionAjaxGenerarXML() {
        $model = new AnexoTransaccional;
        $result = array();
        $noRegistrosClientesT = 0;
        $biTarifa0T = 0;
        $biTarifa12 = 0;
        $biNOIvaT = 0;
        $valorIvaT = 0;
        $valorRetIvaT = 0;
        $valorRetRentaT = 0;
        $informacionTalonResumen = array(
            'razonSocial' => "",
            'numEstabRuc' => "",
            'Anio' => "",
            'Mes' => "",
            'tipoComprobante' => "",
            'tipoComprobanteDetalle' => "",
            'noRegistrosClientes' => $noRegistrosClientesT,
            'biTarifa0' => $biTarifa0T,
            'biTarifa12' => $biTarifa12,
            'biNOIva' => $biNOIvaT,
            'valorIva' => $valorIvaT,
            'valorRetIva' => $valorRetIvaT,
            'valorRetRenta' => $valorRetRentaT
        );
        if (Yii::app()->request->isAjaxRequest) {
//            var_dump($_POST['AnexoTransaccional']);

            if (isset($_POST['AnexoTransaccional'])) {
                $model->attributes = $_POST['AnexoTransaccional'];

                if ($model->validate()) {

                    $fechas = explode(' - ', $model->fechaBusqueda);
                    $inicio = Util::FormatDate($fechas[0], 'Y-m-d');
                    $fin = Util::FormatDate($fechas[1], 'Y-m-d');
                    $fechasDesglozada = explode('-', $inicio); //dia//mes//año
//configuracion empresa

                    $informante = ConfiguracionEmpresa::model()->find();

                    $clientesTotales = ClienteCuenta::model()->findAll();
                    if (!empty($informante)) {
                        if (!empty($clientesTotales)) {

                            $tipoE = "R";
                            $IdInformanteE = $informante->ruc;
                            $razonSocialE = $informante->razon_social;
                            $anioConsultaE = $fechasDesglozada[0]; //q venga del post

                            $mesConsultaE = $fechasDesglozada[1]; //q venga del post
                            $numEstabRucE = substr($informante->ruc, 10);
//     
                            $totalVentasE = 0;



                            $codigoOperativoE = "IVA";

                            //clientes
                            $tipoComprobante = "18";
                            //asignar para mostrar en la vista ats la tablla 
                            $informacionTalonResumen['razonSocial'] = $razonSocialE;
                            $informacionTalonResumen['numEstabRuc'] = $IdInformanteE;
                            $informacionTalonResumen['Anio'] = $anioConsultaE;
                            $informacionTalonResumen['Mes'] = $mesConsultaE;
                            $informacionTalonResumen['tipoComprobante'] = $tipoComprobante;
                            $informacionTalonResumen['tipoComprobanteDetalle'] = "DOCUMENTOS AUTORIZADOS EN VENTAS EXCEPTO ND Y NC";



                            $infoClientes = array(
                            );
                            $fechaInicio = $inicio;
                            $fechaFin = $fin;
                            $NombreDocumetno = $fechaInicio . "_" . $fechaFin . "_" . $IdInformanteE;
                            $facturasCliente = VentasFactura::model()->findAll("fecha_emision between :fecha_inicio AND :fecha_fin", array(':fecha_inicio' => $fechaInicio, 'fecha_fin' => $fechaFin));

                            if (!empty($facturasCliente)) {

                                $informacionTalonResumen['noRegistrosClientes'] = count($clientesTotales); //Numero de Rigistros SONlos clientes
                                foreach ($clientesTotales as $key => $value) {

                                    $facturasCliente = VentasFactura::model()->de_cuenta($value['id'])->findAll("fecha_emision between :fecha_inicio AND :fecha_fin", array(':fecha_inicio' => $fechaInicio, 'fecha_fin' => $fechaFin));


                                    $baseNoGraIva = 0;
                                    $baseImponible = 0;
                                    $baseImpGrav = 0;
                                    $montoIva = 0;
                                    foreach ($facturasCliente as $key2 => $valores) {
                                        $datos = VentasFactura::model()->getValorDetallado($valores['id']);

                                        $baseNoGraIva +=$datos['noIva'];
                                        $baseImponible +=$datos['tarifa0'];
                                        $baseImpGrav +=$datos['tarifa12'];

                                        $montoIva +=$datos['iva12'];
                                        $TotalRetencionesDetalle = VentasFactura::model()->getValorDetalladoRetenciones($valores['id']);
                                    }

                                    $totalVentasE+=$baseNoGraIva + $baseImponible + $baseImpGrav;


                                    array_push($infoClientes, array(
                                        'tpIdCliente' => $this->tipoIdRuc($value['documento']),
                                        'idCliente' => $value['documento'],
                                        'tipoComprobante' => $tipoComprobante,
                                        'numeroComprobantes' => count(VentasFactura::model()->de_cuenta($value['id'])->findAll("fecha_emision between :fecha_inicio AND :fecha_fin", array(':fecha_inicio' => $fechaInicio, 'fecha_fin' => $fechaFin))),
                                        'baseNoGraIva' => number_format($baseNoGraIva, 2, '.', ''),
//                    'baseNoGraIva' => number_format(0.00, 2),
                                        'baseImponible' => number_format($baseImponible, 2, '.', ''),
//                    'baseImponible' => number_format(0.00, 2),
                                        'baseImpGrav' => number_format($baseImpGrav, 2, '.', ''),
                                        'montoIva' => number_format($montoIva, 2, '.', ''),
                                        'valorRetIva' => $TotalRetencionesDetalle['valorRetIva'],
                                        'valorRetRenta' => $TotalRetencionesDetalle['valorRetRenta'],
                                    ));
                                }

                                $informanteInformacion = array(
                                    'TipoIDInformante' => $tipoE,
                                    'IdInformante' => $IdInformanteE,
                                    'razonSocial' => $razonSocialE,
                                    'Anio' => $anioConsultaE,
                                    'Mes' => $mesConsultaE,
                                    'numEstabRuc' => $numEstabRucE,
                                    'totalVentas' => number_format($totalVentasE, 2, '.', ''),
                                    'codigoOperativo' => $codigoOperativoE
                                        )
                                ;

                                $xml = new DomDocument('1.0', 'UTF-8');
                                $xml->xmlStandalone = false;
                                $root = $xml->createElement('iva');
                                $root = $xml->appendChild($root);
//INFO EMPRESA
                                $TipoIDInformante = $xml->createElement('TipoIDInformante', $informanteInformacion['TipoIDInformante']);
                                $TipoIDInformante = $root->appendChild($TipoIDInformante);
                                $IdInformante = $xml->createElement('IdInformante', $informanteInformacion['IdInformante']);
                                $IdInformante = $root->appendChild($IdInformante);

                                $razonSocial = $xml->createElement('razonSocial', $informanteInformacion['razonSocial']);
                                $razonSocial = $root->appendChild($razonSocial);

                                $Anio = $xml->createElement('Anio', $informanteInformacion['Anio']);
                                $Anio = $root->appendChild($Anio);

                                $Mes = $xml->createElement('Mes', $informanteInformacion['Mes']);
                                $Mes = $root->appendChild($Mes);

                                $numEstabRuc = $xml->createElement('numEstabRuc', $informanteInformacion['numEstabRuc']);
                                $numEstabRuc = $root->appendChild($numEstabRuc);

                                $totalVentas = $xml->createElement('totalVentas', $informanteInformacion['totalVentas']);
                                $totalVentas = $root->appendChild($totalVentas);

                                $codigoOperativo = $xml->createElement('codigoOperativo', $informanteInformacion['codigoOperativo']);
                                $codigoOperativo = $root->appendChild($codigoOperativo);
//VENTAS INFOMACIONUSUARIOS
                                $ventas = $xml->createElement('ventas');
                                $ventas = $root->appendChild($ventas);



//USUARIOS
                                foreach ($infoClientes as $key => $value) {
                                    $detalleVentas = $xml->createElement('detalleVentas');
                                    $detalleVentas = $ventas->appendChild($detalleVentas);


                                    $tpIdCliente = $xml->createElement('tpIdCliente', $value['tpIdCliente']);
                                    $tpIdCliente = $detalleVentas->appendChild($tpIdCliente);

                                    $idCliente = $xml->createElement('idCliente', $value['idCliente']);
                                    $idCliente = $detalleVentas->appendChild($idCliente);

                                    $tipoComprobante = $xml->createElement('tipoComprobante', $value['tipoComprobante']);
                                    $tipoComprobante = $detalleVentas->appendChild($tipoComprobante);

                                    $numeroComprobantes = $xml->createElement('numeroComprobantes', $value['numeroComprobantes']);
                                    $numeroComprobantes = $detalleVentas->appendChild($numeroComprobantes);

                                    $baseNoGraIva = $xml->createElement('baseNoGraIva', $value['baseNoGraIva']);
                                    $baseNoGraIva = $detalleVentas->appendChild($baseNoGraIva);
                                    $biNOIvaT+=$value['baseNoGraIva'];

                                    $baseImponible = $xml->createElement('baseImponible', $value['baseImponible']);
                                    $baseImponible = $detalleVentas->appendChild($baseImponible);
                                    $biTarifa0T+=$value['baseImponible'];
                                    $baseImpGrav = $xml->createElement('baseImpGrav', $value['baseImpGrav']);
                                    $baseImpGrav = $detalleVentas->appendChild($baseImpGrav);
                                    $biTarifa12+=$value['baseImpGrav'];

                                    $montoIva = $xml->createElement('montoIva', $value['montoIva']);
                                    $montoIva = $detalleVentas->appendChild($montoIva);
                                    $valorIvaT+=$value['montoIva'];

                                    $valorRetIva = $xml->createElement('valorRetIva', $value['valorRetIva']);
                                    $valorRetIva = $detalleVentas->appendChild($valorRetIva);
                                    $valorRetIvaT+=$value['valorRetIva'];
                                    $valorRetRenta = $xml->createElement('valorRetRenta', $value['valorRetRenta']);
                                    $valorRetRenta = $detalleVentas->appendChild($valorRetRenta);
                                    $valorRetRentaT+=$value['valorRetRenta'];
                                }
//una ves sumadas toda la informacion
                                $informacionTalonResumen['biTarifa0'] = number_format($biTarifa0T, 2, '.', '');
                                $informacionTalonResumen ['biTarifa12'] = number_format($biTarifa12, 2, '.', '');
                                $informacionTalonResumen ['biNOIva'] = number_format($biNOIvaT, 2, '.', '');
                                $informacionTalonResumen ['valorIva'] = number_format($valorIvaT, 2, '.', '');
                                $informacionTalonResumen['valorRetIva'] = number_format($valorRetIvaT, 2, '.', '');
                                $informacionTalonResumen ['valorRetRenta'] = number_format($valorRetRentaT, 2, '.', '');
                                $informacionTalonResumen['totalRetencion'] = number_format($valorRetIvaT + $valorRetRentaT, 2, '.', '');
//TODO : BUSCAR EL PROPIO DATO establecimiento 
                                $codEstabEst = 123;
                                $totalVentas = number_format($totalVentasE, 2, '.', '');
                                $ventasEstablecimiento = $xml->createElement('ventasEstablecimiento');
                                $ventasEstablecimiento = $root->appendChild($ventasEstablecimiento);

                                $ventaEst = $xml->createElement('ventaEst');
                                $ventaEst = $ventasEstablecimiento->appendChild($ventaEst);

                                $codEstab = $xml->createElement('codEstab', $codEstabEst);
                                $codEstab = $ventaEst->appendChild($codEstab);

                                $ventasEstab = $xml->createElement('ventasEstab', $totalVentas);
                                $ventasEstab = $ventaEst->appendChild($ventasEstab);

                                $xml->formatOutput = true;


                                $usuarioNombre = $NombreDocumetno . ".xml";
                                $ruta = realpath(Yii::app()->getBasePath() . "/../uploads/xml/");

                                $xml->save($ruta . "/" . $usuarioNombre);
                                $result["resultado"] = $informacionTalonResumen;
                                $result['success'] = true;
                                $result['nombreArchivo'] = $usuarioNombre;
                                $result['message'] = 'Generado exitosamente.';
                            }//datos no existentes en facturas
                            else {
                                $result['tipo'] = 1;
                                $result['success'] = false;
                                $result['message'] = 'No existen Facturas en este Periodo.';
                            }
                        }//no existe datos de clientes o cuentas
                        else {
                            $result['tipo'] = 2;
                            $result['success'] = false;

                            $result['message'] = 'No existen Datos de Clientes.';
                        }
                    } else {
                        $result['tipo'] = 4;
                        $result['success'] = false;
                        $result['message'] = 'No existen Datos sobre su Empresa.';
                    }
                } else {
                    $result['tipo'] = 3;
                    $result['success'] = false;
                    $result['errors'] = $model->getErrors();
                }
            }
        }
        echo CJSON::encode($result);
    }

    public function actionAts() {
        $this->render('ATS');
    }

    private function tipoIdRuc($documento) {
        //04 cedula
//05 ruc
//06 pasaporte
//07
        $tipo = "";
        if (strlen($documento) == 13) {
            $tipo = "04";
        } elseif (strlen($documento) == 10
        ) {
            $tipo = "05";
        } elseif (strlen($documento) > 0 || strlen($documento) < 13) {
            $tipo = "06";
        }


        return $tipo;
    }

    public function actionObtenerUltimoDiaMes($fecha = null) {



        $fecha = Util::FormatDate($fecha, "Y-m-d");

        $fecha2 = new DateTime($fecha);



        $ultimodiMes = $fecha2->modify('last day of this month');

        $dia = date_format($ultimodiMes, 'd/m/Y');

        echo CJSON::encode($dia);
    }

}
